100 REMark +-------------------------------+
110 REMark |     "Don't Shoot The QL"      |
120 REMark | by Dilwyn Jones, January 2021 |
130 REMark |         version 1.01          |
140 REMark +-------------------------------+
150 :
160 MODE 8
170 :
180 REMark game configuration settings
190 REMark game speed setting, suggest 1 for QL, 100-250 for (Super) Gold Card,
200 REMark 500-5000 for fast emulators
210 sound_on%       = 1     : REMark 0 = mute the sound, 1 = sound on
220 game_duration   = 60    : REMark duration of each game in seconds
230 gun$            = "/^\" : REMark 3-character gun
240 missile$        = "|"   : REMark missile character used
250 lines%          = 5     : REMark lines of computers to be shot at (1 - 15)
260 game_speed%     = 1     : REMark slowdown factor (1=fast 9999=slow)
270 comp_frequency% = 50    : REMark 1 in comp_frequency% computer launches
280 mac_frequency%  = 50    : REMark 1 in mac_frequency% chance of mac launches
290 hiscore_file$   = "win1_dontshoottheql_hiscoretable_dat" : REMark high scores file
300 WINDOW #0,484,242,14,7  : REMark startup screen window location
310 :
320 REMark initialise program display - edit the WINDOW
330 REMark statement above to start elsewhere on hires screens
340 BORDER #0,1,255 : PAPER #0,0 : INK #0,4 : CSIZE #0,2,1
350 :
360 REMark initialise variables and arrays
370 RESTORE
380 :
390 REMark get list of computer names and scores
400 READ no_of_computers%
410 DIM computer$(no_of_computers%-1,8), score%(no_of_computers%-1)
420 FOR a = 0 TO no_of_computers%-1 : READ computer$(a),score%(a)
430 :
440 REMark High Score table arrays
450 DIM hiscore%(9),hiscorename$(9,10)
460 Get_High_Score_Table
470 :
480 REPeat program
490   Show_Hi_Score_Table
500   REPeat get_key
510     CURSEN #0 : key = CODE(INKEY$(-1)) : CURDIS #0
520     SELect ON key
530       =27    : EXIT program : REMark Esc
540       =10,32 : EXIT get_key : REMark Continue
550       =232   : REMark Setup
560         IF Setup = 27 THEN EXIT program
570         NEXT program
580     END SELect
590   END REPeat get_key
600   :
610   RANDOMISE : REMark different random seed for each game
620   :
630   REMark arrays which control the lines of computers
640   DIM colour%(lines%-1)     : REMark computer colours for individual lines
650   DIM linex%(lines%-1)      : REMark co-ordinates of up to 10 computers
660   DIM linetype%(lines%-1)   : REMark which computer on this line
670   DIM line_speed%(lines%-1) : REMark speed of this computer (2 to 10)
680   :
690   REMark flag each line as empty (-1) for now
700   FOR a = 0 TO lines%-1 : linex%(a) = -1 : REMark -1= inactive line
710   :
720   REMark new game display
730   CLS #0 : REMark INK #0,4 : PRINT #0,FILL$('-',40)
740   PAPER #0,7 : INK #0,2 : AT #0,0,0 : CLS #0,3 : CSIZE #0,3,0
750   CURSOR #0,0,0 : PRINT #0,CHR$(34)&"DON'T SHOOT THE QL"&CHR$(34);
760   CURSOR #0,18,0 : OVER #0,1
770   PRINT #0,"DON'T SHOOT THE QL";
780   CSIZE #0,2,0 : OVER #0,0 : AT #0,0,28 : PRINT #0,'SCORE:0'
790   PAPER #0,0 : INK #0,4 : PRINT #0,FILL$('-',40)
800   AT #0,22,0 : PRINT #0,FILL$('-',40); : INK #0,7
810   :
820   DIM scr$(23,40) : REMark represent screen as a text array
830   FOR a = 0 TO 23 : scr$(a) = FILL$(' ',40)
840   gunx% = RND(0 TO 35) : REMark gun start position at random
850   missilex% = 0 : missiley% = 0 : REMark bomb currently inactive
860   REMark show gun near bottom, but leave room for a status line
870   AT #0,21,gunx%+1 : PAPER #0,2 : INK #0,7 : PRINT #0,gun$; : PAPER #0,0
880   macx% = -1: REMark position of the bonus points MAC.
890   mac$  = "MAC" : REMark the Golden Mac should be 3 characters long
900   :
910   REMark these variables are used to control speed of various things
920   slug_timer%     = 0    : REMark speed controller
930   speed_timer%    = 0    : REMark controls the speed of each flying computer
940   your_score%     = 0    : REMark your displayed score
950   game_start_time = DATE : REMark time this game started
960   last_time_left = -1    : REMark one of two variables for checking time left
970   :
980   REPeat game
990     LET key = CODE(INKEY$) : REMark game control
1000     SELect ON key
1010       =27      : EXIT game : REMark Esc-Stop
1020       =192,200 : REMark cursor left/right to move gun base
1030         gunx% = gunx% - (key=192 AND gunx%>1) + (key=200 AND gunx%<35)
1040         REMark we print spaces either side of gun to erase previous position
1050         AT #0,21,gunx% : PAPER #0,0 : INK #0,7 : PRINT #0,' ';
1060         PAPER #0,2 : PRINT #0,gun$;
1070         PAPER #0,0 : PRINT #0," ";
1080       =10,32,208 : REMark fire using space, enter, or up arrow
1090         IF missiley% = 0 THEN
1100           REMark fire a bomb at the computers
1110           REMark start from just above gun centre
1120           missiley% = 21 : missilex% = gunx% + 2
1130         END IF
1140     END SELect
1150     :
1160     REMark control game speed on fast systems by a slug system for
1170     REMark everything but keyboard control
1180     IF game_speed% > 1 THEN
1190       slug_timer% = slug_timer% + 1
1200       IF slug_timer% < game_speed% THEN NEXT game : REMark action this tick
1210       slug_timer% = 0 : REMark restart counting the slower-downer
1220     END IF
1230     :
1240     REMark monitor and show the time left on this game
1250     time_left = (game_start_time+game_duration-1)-DATE
1260     IF time_left < 1 THEN
1270       EXIT game : REMark out of time
1280     ELSE
1290       IF time_left <> last_time_left THEN
1300         REMark only print the time left when there's been a change,
1310         REMark to save as much time as possible
1320         AT #0,23,30 : INK #0,7 : PRINT #0,"TIME:"&time_left; : CLS #0,4
1330         last_time_left = time_left
1340       END IF
1350     END IF
1360     :
1370     REMark this counter controls speed of individual computer lines
1380     speed_timer% = speed_timer% + 1
1390     IF speed_timer% > 32766 THEN speed_timer% = 0 : REMark avoid overflow
1400     :
1410     REMark move bomb if active
1420     IF missiley% > 0 THEN
1430       REMark erase old bomb position
1440       old_missiley% = missiley%   : REMark missile was here...
1450       missiley%     = missiley%-1 : REMark ..now moves to here
1460       IF missiley% < 2 THEN
1470         REMark bomb reached top of screen, reset
1480         AT #0,2,missilex% : PRINT #0," "; : REMark erase final position
1490         missiley% = 0 : missilex% = 0
1500       ELSE
1510         IF old_missiley% < 21 THEN AT #0,old_missiley%,missilex% : PRINT #0," ";
1520         AT #0,missiley%,missilex% : INK #0,3 : PRINT #0,missile$;
1530       END IF
1540       :
1550       REMark check if bomb has hit anything
1560       Anything_Hit
1570     END IF
1580     :
1590     REMark move the computers
1600     FOR a = 0 TO lines%-1
1610       IF linex%(a) >= 0 THEN
1620         IF (speed_timer% MOD line_speed%(a)) = 0 THEN
1630           REMark move this computer along
1640           linex%(a) = linex%(a) + 1
1650           REMark move line right by adding a space to start of line
1660           scr$(a+4) = " " & scr$(a+4) : REMark array truncates to 40 characters
1670           AT #0,a+4,0 : INK #0,colour%(a) : PRINT #0,scr$(a+4);
1680           IF linex%(a) > 39 THEN linex%(a) = -1 : REMark reset line
1690         END IF
1700       END IF
1710     END FOR a
1720     :
1730     REMark move the bonus MAC if active
1740     IF macx% >=0 THEN
1750       IF (speed_timer% MOD mac_speed%) = 0 THEN
1760         macx% = macx% + 1
1770         IF macx% < 40 THEN
1780           REMark move bonus MAC line right by adding a space to start of line
1790           scr$(2) = " "&scr$(2) : REMark array truncates to 40 characters
1800           AT #0,2,macx%-1 : PRINT #0," "; : PAPER #0,6 : INK #0,0
1810           REMark handle end of line carefully (can't print all the characters)
1820           PRINT #0,mac$(1 TO 1+(macx%<39)+(macx%<38));
1830           PAPER #0,0 : INK #0,7
1840         ELSE
1850           macx% = -1 : scr$(2) = FILL$(' ',40)
1860           AT #0,2,39 : PRINT #0," "; : REMark erase MAC final position
1870         END IF
1880       END IF
1890     END IF
1900     :
1910     REMark activate a new computer at random
1920     IF RND(1 TO comp_frequency%) = 1 THEN
1930       lne% = RND(0 TO lines%-1) : REMark 9 lines of targets (not including bonus MAC)
1940       IF linex%(lne%) = -1 THEN
1950         REMark activate a random computer on this line
1960         linetype%(lne%)  = RND(0 TO no_of_computers%-1)
1970         linex%(lne%)     = 0
1980         colour%(lne%)    = RND(2 TO 7)
1990         line_speed%(lne%)= RND(2 TO 10)
2000         scr$(lne%+4)     = computer$(linetype%(lne%))&FILL$(" ",40)
2010         AT #0,4+lne%,0 : INK #0,colour%(lne%)
2020         PRINT #0,computer$(linetype%(lne%));
2030       END IF
2040     END IF
2050     :
2060     IF macx% = -1 THEN
2070       IF RND(1 TO mac_frequency%) = 1 THEN
2080         REMark activate a new bonus points MAC at random
2090         macx% = 0 : scr$(2) = mac$ & FILL$(' ',37)
2100         AT #0,2,0 : PAPER #0,6 : INK #0,0 : PRINT #0,mac$;
2110         PAPER #0,0 : INK #0,7
2120         mac_speed% = RND(2 TO 10)
2130       END IF
2140     END IF
2150     :
2160     REMark after moving things, check again if it's caused a hit
2170     Anything_Hit
2180   :
2190   END REPeat game
2200   :
2210   program = KEYROW(1) : REMark flush any keys in buffer
2220   :
2230   IF your_score% > hiscore%(9) THEN
2240     AT #0,23,0 : CLS #0,3 : INK #0,7
2250     INPUT #0,'NEW HI-SCORE! Enter name:';name$;
2260     FOR a = 0 TO 9
2270       IF hiscore%(a) < your_score% THEN
2280         REMark insert new entry here in high score table
2290         IF a < 9 THEN
2300           REMark shuffle things down to make room for new entry
2310           FOR b = 9 TO a+1 STEP -1
2320             hiscorename$(b) = hiscorename$(b-1) : hiscore%(b) = hiscore%(b-1)
2330           END FOR b
2340         END IF
2350         hiscorename$(a) = name$ : hiscore%(a) = your_score%
2360         EXIT a
2370       END IF
2380     END FOR a
2390   END IF
2400   :
2410 END REPeat program
2420 :
2430 REMark try to save high score table to file
2440 AT #0,23,0 : CLS #0,3 : INK #0,7 : PRINT #0,'Saving high-score table.';
2450 OPEN_OVER #3,hiscore_file$
2460 FOR a = 0 TO 9
2470   PRINT #3,hiscorename$(a)
2480   PRINT #3,hiscore%(a)
2490 END FOR a
2500 CLOSE #3
2510 :
2520 AT #0,23,0 : CLS #0,3 : INK #0,7 : PRINT #0,'Program finished.';
2530 CSIZE #0,0,0
2540 :
2550 STOP
2560 :
2570 DEFine PROCedure Anything_Hit
2580   REMark check if bomb has hit anything
2590   IF missiley% > 1 AND missiley% < (lines%+4) THEN
2600     REMark the computers are only on those lines (bonus mac on line 2,
2610     REMark other computers on lines 4 to 18 (max with 15 lines)
2620     IF scr$(missiley%,missilex%+1) <> ' ' THEN
2630       REMark yes, check which type of computer is it
2640       IF missiley% > 3 THEN
2650         REMark one of the computer lines
2660         IF linetype%(missiley%-4) = 0 THEN
2670           REMark Oops, shot a QL
2680           AT #0,23,0 : REMark bottom left
2690           PRINT#0,computer$(linetype%(missiley%-4))&" ";
2700           PRINT#0,score%(linetype%(missiley%-4)) TO 20;
2710           Oops : REMark oops sound
2720           your_score% = your_score% + score%(linetype%(missiley%-4))
2730           AT #0,0,34 : PAPER #0,7 : INK #0,2
2740           PRINT #0,your_score%; : CLS #0,4 : PAPER #0,0
2750         ELSE
2760           REMark shot something which wasn't a QL
2770           AT #0,23,0 : REMark bottom left
2780           PRINT#0,computer$(linetype%(missiley%-4))&" ";
2790           PRINT#0,score%(linetype%(missiley%-4)) TO 20;
2800           REMark any type other than QL, add to score and delete
2810           Zap : REMark sound a non-QL hit
2820           your_score% = your_score% + score%(linetype%(missiley%-4))
2830           AT #0,0,34 : PAPER #0,7 : INK #0,2
2840           PRINT #0,your_score%; : CLS #0,4 : PAPER #0,0
2850         END IF
2860         REMark reset line and bomb
2870         scr$(missiley%) = FILL$(" ",40): REMark line is now blank
2880         AT #0,missiley%,0 : CLS #0,3   : REMark clear line
2890         linetype%(missiley%-4)   = 0   : REMark no computer on line atm.
2900         linex%(missiley%-4)      = -1  : REMark back to start of line
2910         line_speed%(missiley%-4) = 2   : REMark reset speed to lowest value
2920         colour%(missiley%-4)     = 0   : REMark reset colours
2930         missiley% = 0 : missilex%= 0   : REMark reset bomb
2940       ELSE
2950         REMark check if a bonus "MAC" hit
2960         IF missiley% = 2 THEN
2970           REMark yes, hit a bonus pointer!
2980           MacZap : REMark sound for bonus Golden Mac hit
2990           FOR a = 1 TO 3
3000             AT #0,2,macx% : INK #0,6
3010             PRINT #0,'***'(1 TO 1+(macx%<39)+(macx%<38));
3020             PAUSE 1
3030             AT #0,2,macx% : INK #0,6
3040             PRINT #0,'   '(1 TO 1+(macx%<39)+(macx%<38));
3050             PAUSE 1
3060           END FOR a
3070           your_score% = your_score% + 20
3080           AT #0,0,34 : PAPER #0,7 : INK #0,2
3090           PRINT #0,your_score%; : CLS #0,4 : PAPER #0,0
3100           AT #0,23,0 : INK #0,6
3110           FLASH #0,1 : PRINT #0,"BONUS:20 MAC-POINTS!"; : FLASH #0,0
3120           scr$(2) = FILL$(" ",40) : AT #0,2,0 : CLS #0,3
3130           missiley% = 0 : missilex% = 0 : macx% = -1
3140         END IF
3150       END IF
3160     END IF
3170   END IF
3180 END DEFine Anything_Hit
3190 :
3200 REMark number of computer types
3210 DATA 15
3220 :
3230 REMark computer name, score (first must be QL with -ve score)
3240 REMark the scores should reflect the length of the name, as
3250 REMark longer names are easier to hit
3260 REMark the name "MAC" is reserved for the bonus points flyer
3270 DATA "QL",-10
3280 DATA "ST",6
3290 DATA "ZX80",4
3300 DATA "ZX81",4
3310 DATA "SPECTRUM",1
3320 DATA "Z88",5
3330 DATA "PC",6
3340 DATA "PET",5
3350 DATA "VIC20",4
3360 DATA "C64",5
3370 DATA "ATOM",4
3380 DATA "BBC",5
3390 DATA "AMIGA",3
3400 DATA "ORIC",4
3410 DATA "DRAGON",2
3420 :
3430 DEFine PROCedure Zap
3440   REMark the ZAP is used as a hit indicator for non-QL machines
3450   REMark the RND(0 to 15) at the end adds a bit of random fuzziness
3460   REMark to vary the sound a little for each hit
3470   IF sound_on% THEN BEEP 5000,5*linetype%(missiley%-4),0,101,1,0,RND(0 TO 15)
3480 END DEFine Zap
3490 :
3500 DEFine PROCedure MacZap
3510   REMark used as a hit indicator on the bonus Golden Mac
3520   IF sound_on% THEN BEEP 7500,50,0,50,1,5,0
3530 END DEFine MacZap
3540 :
3550 DEFine PROCedure Oops
3560   REMark this sound used when accidentally hitting a QL
3570   IF sound_on% THEN BEEP 10000,10,255,50,1,5,0
3580 END DEFine Oops
3590 :
3600 DEFine FuNction Setup
3610   LOCal loop,key,item
3620   CLS #0
3630   PAPER #0,7 : INK #0,2 : CSIZE #0,3,1 : AT #0,0,0 : CLS #0,3
3640   CURSOR #0,80,0 : PRINT #0,CHR$(34)&"DON'T SHOOT THE QL"&CHR$(34);
3650   CURSOR #0,98,0 : OVER #0,1
3660   PRINT #0,"DON'T SHOOT THE QL"
3670   CSIZE #0,2,0 : OVER #0,0 : INK #0,4 : PAPER #0,0 : AT #0,4,0
3680   PRINT #0,'  ';CHR$(190);CHR$(191);'-Select  ';CHR$(188);CHR$(189);'-Adjust  SPACE-Continue';
3690   PAPER #0,0 : INK #0,6 : CSIZE #0,2,1 : AT #0,3,4
3700   PRINT #0,'Sound effects:' TO 30;
3710   IF sound_on% THEN PRINT #0,'On' : ELSE PRINT #0,'Off'
3720   PRINT #0,TO 4;'Game duration (seconds):' TO 30;game_duration
3730   PRINT #0,TO 4;'Lines of computers:' TO 30;lines%
3740   PRINT #0,TO 4;'New computers, 1 in:' TO 30;comp_frequency%
3750   PRINT #0,TO 4;'New Golden Macs, 1 in:' TO 30;mac_frequency%
3760   PRINT #0,TO 4;'Game speed:' TO 30;game_speed%
3770   CSIZE #0,2,0 : PRINT #0,TO 6;'(1=fast, 9999=slow)';
3780   INK #0,6
3790   item = 0 : REMark current item in menu
3800   REPeat loop
3810     OVER #0,-1 : BLOCK #0,60,20,360,60+(20*item),7
3820     AT #0,4,39 : CURSEN #0 : key = CODE(INKEY$(-1)) : CURDIS #0
3830     BLOCK #0,60,20,360,60+(20*item),7 : OVER #0,0
3840     SELect ON key
3850       =27,32,10 : EXIT loop
3860       =192,196,200,204 : REMark left and right
3870         CSIZE #0,2,1
3880         SELect ON item
3890           =0 : AT #0,3,30 : sound_on% = NOT sound_on%
3900                IF sound_on% = 0 THEN PRINT #0,'Off'; : ELSE PRINT #0,'On '; : END IF
3910           =1 : game_duration = game_duration-(key=192)-(10*(key=196))+(key=200)+(10*(key=204))
3920                IF game_duration < 10 THEN game_duration = 10
3930                IF game_duration > 32766 THEN game_duration = 32766
3940                AT #0,4,30 : PRINT #0,game_duration&" ";
3950           =2 : lines% = lines%-(key=192 OR key=196)+(key=200 OR key=204)
3960                IF lines% < 1 THEN lines% = 1
3970                IF lines% > 15 THEN lines% = 15
3980                AT #0,5,30 : PRINT #0,lines%&' ';
3990           =3 : AT #0,6,30
4000                comp_frequency% = comp_frequency%-(key=192)-(10*(key=196))+(key=200)+(10*(key=204))
4010                IF comp_frequency% < 1 THEN comp_frequency% = 1
4020                IF comp_frequency% > 1000 THEN comp_frequency% = 1000
4030                PRINT #0,comp_frequency%&' ';
4040           =4 : AT #0,7,30
4050                mac_frequency% = mac_frequency%-(key=192)-(10*(key=196))+(key=200)+(10*(key=204))
4060                IF mac_frequency% < 1 THEN mac_frequency% = 1
4070                IF mac_frequency% > 1000 THEN mac_frequency% = 1000
4080                PRINT #0,mac_frequency%&' ';
4090           =5 : AT #0,8,30
4100                game_speed% = game_speed%-(key=192)-(10*(key=196))+(key=200)+(10*(key=204))
4110                IF game_speed% < 1 THEN game_speed% = 1
4120                IF game_speed% > 9999 THEN game_speed% = 9999
4130                PRINT #0,game_speed%;' ';
4140         END SELect
4150         CSIZE #0,2,0
4160       =208,216  : REMark up and down
4170         item = item+(key=216)-(key=208)
4180         IF item > 5 THEN
4190           IF item > 5 THEN item = 0
4200         ELSE
4210           IF item < 0 THEN item = 5
4220         END IF
4230     END SELect
4240   END REPeat loop
4250   CSIZE #0,2,0 : INK #0,7 : RETurn key
4260 END DEFine Setup
4270 :
4280 DEFine PROCedure Get_High_Score_Table
4290   LOCal fer,a
4300   fer = FTEST(hiscore_file$)
4310   IF fer < 0 THEN
4320     REMark create a dummy table to get things started since we can't find file
4330     FOR a = 0 TO 9
4340       hiscorename$(a) = "Dilwyn"
4350       hiscore%(a)     = 10+(10*(9-a))
4360     END FOR a
4370   ELSE
4380     OPEN_IN #3,hiscore_file$
4390     FOR a = 0 TO 9
4400       INPUT #3,hiscorename$(a)
4410       INPUT #3,hiscore%(a)
4420     END FOR a
4430     CLOSE #3
4440   END IF
4450 END DEFine Get_High_Score_Table
4460 :
4470 DEFine PROCedure Show_Hi_Score_Table
4480   CLS #0
4490   PAPER #0,7 : INK #0,2 : AT #0,0,0 : CSIZE #0,3,1 : CLS #0,3
4500   CURSOR #0,80,0 : PRINT #0,CHR$(34)&"DON'T SHOOT THE QL"&CHR$(34);
4510   CURSOR #0,98,0 : OVER #0,1
4520   PRINT #0,"DON'T SHOOT THE QL"
4530   CSIZE #0,2,0 : OVER #0,0 : INK #0,6 : PAPER #0,0 : AT #0,4,12
4540   UNDER #0,1 : PRINT #0,'HIGH-SCORE TABLE' : UNDER #0,0 : AT #0,7,0
4550   FOR a = 0 TO 9
4560     INK #0,4
4570     PRINT #0,TO 12;hiscorename$(a) TO 24+(hiscore%(a)<10)+(hiscore%(a)<100)+(hiscore%(a)<1000);
4580     INK #0,7 : PRINT #0,hiscore%(a)
4590   END FOR a
4600   AT #0,20,0 : INK #0,3
4610   PRINT #0,'  F1-Setup    SPACE-Play    ESC-Quit ';
4620   INK #0,7
4630 END DEFine Show_Hi_Score_Table
4640 :
4650 REMark $$off
4660 DEFine PROCedure XTV
4670   REMark try to make basic windows fill screen
4680   LOCal dw%,dh%
4690   dw% = 512 : IF VER$ = 'HBA' THEN dw% = SCR_XLIM
4700   dh% = 256 : IF VER$ = 'HBA' THEN dh% = SCR_YLIM
4710   OUTLN #0,dw%,dh%,0,0
4720   WINDOW dw%,dh%-52,0,0 : WINDOW #2,dw%,dh%-52,0,0 : WINDOW #0,dw%,52,0,dh%-52
4730   BORDER #1,1,255 : BORDER #2,1,255 : BORDER #0,1,255
4740   CLS : CLS #2 : CLS #0
4750 END DEFine XTV
4760 :
4770 DEFine PROCedure XTV2
4780   REMark try to make basic windows fill left half of screen on hires display
4790   LOCal dw%,dh%
4800   dw% = 512 : IF VER$ = 'HBA' THEN dw% = SCR_XLIM
4810   dh% = 256 : IF VER$ = 'HBA' THEN dh% = SCR_YLIM
4820   OUTLN #0,dw%/2,dh%,0,0 : WINDOW dw%/2,dh%,0,0
4830   WINDOW #2,dw%/2,dh%-52,0,0 : WINDOW #0,dw%/2,52,0,dh%-52
4840   BORDER #1,1,255 : BORDER #2,1,255 : BORDER #0,1,255
4850   CLS : CLS #2 : CLS #0
4860 END DEFine XTV2
4870 :
4880 DEFine PROCedure Sa
4890   REMark save a _bas and _sav copy
4900   SAVE  win1_dontshoottheql_dstheql_bas
4910   QSAVE win1_dontshoottheql_dstheql
4920 END DEFine Sa
4930 REMark $$on
